package com.freewater.parking.application;

import com.freewater.parking.domain.parking.CalculateFeeCommand;
import com.freewater.parking.domain.parking.CheckInCommand;
import com.freewater.parking.domain.parking.CheckOutCommand;
import com.freewater.parking.domain.parking.NotifyPayCommand;

public interface ParkingAppService {

    /**
     * 车辆入场
     *
     * @param checkInCommand 入场cmd
     */
    boolean checkIn(CheckInCommand checkInCommand);

    /**
     * 车辆出场
     *
     * @param checkOutCommand 出场cmd
     */
    boolean checkOut(CheckOutCommand checkOutCommand);

    /**
     * 计算停车费
     *
     * @param calculateFeeCommand 停车费计算cmd
     * @return 停车费
     */
    int calculateFee(CalculateFeeCommand calculateFeeCommand);

    /**
     * 通知停车费已支付（可分多次支付）
     *
     * @param notifyPayCommand 支付cmd
     */
    void notifyPay(NotifyPayCommand notifyPayCommand);
}
